home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 021-030 / amok21 / iffsupport1.5 / demos / showovsc.mod < prev    next >
Text File  |  1993-11-04  |  3KB  |  88 lines

  1. (*---------------------------------------------------------------------------
  2.     :Program.    ShowOvsc.mod
  3.     :Author.     Fridtjof Siebert
  4.     :Address.    Nobileweg 67, D-7000 Stuttgart 40
  5.     :Phone.      (0)711/822509
  6.     :Shortcut.   [fbs]
  7.     :Version.    1.0
  8.     :Date.       26-Feb-89
  9.     :Copyright.  PD
  10.     :Language.   Modula-II
  11.     :Translator. M2Amiga v3.1d
  12.     :Imports.    IFFSupport [fbs].
  13.     :UpDate.     none.
  14.     :Contents.   Demo zu IFFSupport für Overscan-Colorcycling-Bilder.
  15.     :Remark.     Syntax: ShowOvsc <filename>
  16. ---------------------------------------------------------------------------*)
  17.  
  18. MODULE ShowOvsc;
  19.  
  20. FROM SYSTEM     IMPORT ADR;
  21. FROM Arguments  IMPORT NumArgs, GetArg;
  22. FROM Graphics   IMPORT GfxBasePtr, ViewModes;
  23. FROM Intuition  IMPORT ScreenPtr, CloseScreen, DisplayBeep, WindowPtr, MakeScreen,
  24.                        RethinkDisplay;
  25. FROM IFFSupport IMPORT ReadILBM, ReadILBMFlags, ReadILBMFlagSet, DoCycle, EndCycle,
  26.                        IFFInfo, NuScreen;
  27. FROM Dos        IMPORT Delay;
  28. IMPORT Graphics;
  29.  
  30. CONST
  31.   minvx = -31;
  32.   maxvx = 0;
  33.   minvy = -19;
  34.   maxvy = 12;
  35.   author = "ShowOvsc, © 1989 by Fridtjof Siebert / AMOK Stuttgart";
  36.  
  37. VAR
  38.   MyScreen: ScreenPtr;        (* the Picture's ScreenPointer               *)
  39.   WindowDummy: WindowPtr;     (* only a dummy for NIL-Windowpointer        *)
  40.   Name: ARRAY[0..79] OF CHAR; (* the Picture's Name                        *)
  41.   length: INTEGER;            (* dummy for receiving Name's Length         *)
  42.   Ciapra [0BFE001H]: SET OF (s0,s1,s2,s3,s4,s5,lmb);
  43.   gfx: GfxBasePtr;
  44.  
  45. BEGIN
  46.  
  47. (*------  Get Name:  ------*)
  48.  
  49.   IF NumArgs()#0 THEN GetArg(1,Name,length) ELSE HALT END;
  50.   gfx := ADR(Graphics);
  51.  
  52. (*------  Read and Show Pic:  ------*)
  53.  
  54.   IF ReadILBM(Name,ReadILBMFlagSet{front},MyScreen,WindowDummy) THEN
  55.  
  56.     WITH MyScreen^.viewPort DO
  57.       dxOffset := IFFInfo.BMHD.width;
  58.       dyOffset := IFFInfo.BMHD.height;
  59.       IF NOT(hires IN NuScreen.viewModes) THEN INC(dxOffset,dxOffset)     END;
  60.       IF lace      IN NuScreen.viewModes  THEN dyOffset := dyOffset DIV 2 END;
  61.       dxOffset := (ORD(gfx^.normalDisplayColumns) - dxOffset) DIV 2;
  62.       dyOffset := (ORD(gfx^.normalDisplayRows)    - dyOffset) DIV 2;
  63.       IF dyOffset<-16 THEN dyOffset := -16 ELSIF dyOffset>200 THEN dyOffset := 200 END;
  64.       IF dxOffset<-32 THEN dxOffset := -32 ELSIF dxOffset>704 THEN dxOffset := 704 END;
  65.       IF NOT(hires IN NuScreen.viewModes) THEN dxOffset := dxOffset DIV 2 END;
  66.       IF lace      IN NuScreen.viewModes  THEN INC(dyOffset,dyOffset)     END;
  67.     END;
  68.     MakeScreen(MyScreen); RethinkDisplay();
  69.  
  70.     (*------  start ColorCycling:  ------*)
  71.  
  72.     IF DoCycle(ADR(IFFInfo),MyScreen) THEN END;
  73.  
  74.     WHILE lmb IN Ciapra DO Delay(3) END;
  75.     (* that's bad style, but it's the easiest way to wait for left Button  *)
  76.  
  77.     (*------  stop ColorCycling (this mustn't be forgotten !!!) ------*)
  78.  
  79.     EndCycle(ADR(IFFInfo));
  80.  
  81.     CloseScreen(MyScreen); (* close the Screen *)
  82.  
  83.   ELSE
  84.     DisplayBeep(NIL); (* any error occured: lets display a Beep ! *)
  85.   END;
  86.  
  87. END ShowOvsc. That's all. Wasn't that easy ???
  88.